﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
using System.Data.SqlClient;
namespace Project.Models
{
    public class Cuentas
    {


    }
 
    public class LogIng {
       
        string query, query2;
        Conexion con;
        //Contructores
        public LogIng() { }
        public LogIng(int id, int idarr, string ema, string pass, DateTime creat, bool recor) {
            this.id = id;
            this.arrendedorID = idarr;
            this.email = ema;
            this.password = pass;
            this.creatDate = creat;
            this.recordar = recor;
        
        
        }
        //Propiedades
        public int id { get; set; }
        public int arrendedorID { get; set; }
        [Required]
        [DataType(DataType.Password)]
        public string password{ get; set; }
        [Required]
        public string  email { get; set; }
        public bool recordar { get; set; }
        public DateTime creatDate { get; set; }
        //Metodos

        public SqlDataReader ValidarUsuario(LogIng log) {
            
            con = new Conexion();
            object resultado=con.DBLogin(log);
            
            switch (Convert.ToString(resultado)) {
                case "":

                break;
            
            
            
            
            
            
            }


            SqlDataReader leer = (SqlDataReader)con.DBLogin(log); 
            if (leer!=null) { //validar si hay un usuario con los datos introducidos
              
                string pass="";
                int idPropietario=0, idStatus=0;
                while (leer.Read()) {
                    idPropietario=Convert.ToInt32(leer[1]);
                    pass = Convert.ToString(leer[3]);
                    idStatus = Convert.ToInt32(leer[4]);

                                }
                if (pass.Equals(log.password))//validar si esta bien lo de Mayuscula y minuscula
                {
                    if (idStatus == 1)// Verificar si el usuario tiene el estatus Activo...
                    { //Hace esto si el status esta activo.
                        query2 = "select * from Propietarios where ID='" + idPropietario + "'";
                        return con.getSqlDataReader(query2);//Mandar un sqlDataReader con los datos del Arrendador
                    } 
                    

                            return null;
                      

                }
                else{
                    return null;
                
                }

            
            }
            return null;


        
        }


    }
    public class cambiarPassword {
        //Contructores
       public cambiarPassword() { }


        //Propiedades
        [Required]
        [DataType(DataType.Password)]
        public string OldPassword { get; set; }
        [Required]
        [StringLength(15, ErrorMessage = "La clave debe de estar en un rango  Min. 6 y Max. 15 caracteres.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        public string NewPassword { get; set; }
        
        [DataType(DataType.Password)]
       [System.Web.Mvc.Compare("NewPassword", ErrorMessage = "El password introducido no Concide.")]
        public bool ConfirmPassword { get; set; }
        //Metodos
    
    }
    /// <summary>
    /// //
    /// </summary>
    public class Registrar {
        Conexion con;
            //Contructores
        public Registrar() { }
        public Registrar(int id, string nom, string tel, string cel, string ema,  DateTime creat)
        {
            this.ArrendadorID = id;
            this.nombre = nom;
            this.telefono = tel;
            this.celular = cel;
            this.email = ema;
          
            this.createDate = creat;
        
        }
        //Propiedades
        public int ArrendadorID { get; set; }
        [Required]
        [StringLength(99, ErrorMessage = "Cadena de caracteres muy larga.")]
        public string nombre { get; set; }
         [StringLength(20, ErrorMessage = "Cadena de caracteres muy larga.")]
        public string telefono { get; set; }
         [StringLength(20, ErrorMessage = "Cadena de caracteres muy larga.")]
        public string celular { get; set; }
        [Required]
        [StringLength(49, ErrorMessage = "El {0} debe ser por lo menos {2} caracteres muy largo.", MinimumLength = 6)]
        public string email { get; set; }
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Confirm password")]
        [System.Web.Mvc.Compare("email", ErrorMessage = "El Email Introducido no coincide.")]
        public string reemail { get; set; }
        public string LogoEmpresa { get; set; }
        [StringLength(49, ErrorMessage = "Cadena de caracteres muy larga.")]
        public string NombreEmpresa { get; set; }
        
        /*
        [Required]
        [StringLength(20, ErrorMessage = "Cadena de caracteres muy larga.")]
        [DataType(DataType.Password)]
        public string password { get; set; }
        [Required]
        [DataType(DataType.Password)]
        [System.Web.Mvc.Compare("password", ErrorMessage = "El password Introducido no coincide.")]
        public string repassword { get; set; }
      */
        public DateTime createDate { get; set; }
    
        //Metodos

        public string GuardarRegistro(Registrar reg) {
            Utilidades uti = new Utilidades();
            string resultado;
            con = new Conexion();
            //Obtener un Password Default
            string DefaultPass = uti.PasswordDefault();
            //Validar si el Correo Existe
            resultado = con.DBGuardarRegistro(reg, DefaultPass); ;
            if (resultado == "2")// Si no existe el Email Continua
            {
                 return "Su email suministrado ya Existe...";
            }
            else
                if(resultado=="0"){
                
                              
                    //Mandar el Password defaul a email suministrado
                    if (uti.enviarEmail(reg.email, DefaultPass))//si es verdadero es k se mando correctamente el email
                    {

                        return "Registro Guardado Satisfactoriamente";
                    }
                    else
                    {

                        return "Se produjo un error al validar el Email";

                    }

            }
               return "Se produjo un Error interno. Trate mas Tarde..";
        
        }

        public string ModificarPropietario(Registrar reg, int id) {
          con = new Conexion();
         int result=   con.DBCambiarMisDatos(reg, id);
         if (result == 7)
         {
             return "Registro Guardado Satisfactoriamente";

         }
         else {

             return "Error!! Su Accion no pudo ser realizada";
         }
            
           
        }
    public Registrar GetArrendador(int idArrendador) {

          
            con = new Conexion();
            SqlDataReader leer = con.GetArrendedorById(idArrendador);
            Registrar arrendador=null;
            while (leer.Read()) {

                arrendador = new Registrar(Convert.ToInt32(leer[0]), Convert.ToString(leer[1]), Convert.ToString(leer[2]), Convert.ToString(leer[3]), null, Convert.ToDateTime(leer[7])) { NombreEmpresa = Convert.ToString(leer[6]), LogoEmpresa = Convert.ToString(leer[4]) };

     
            }

            return arrendador;
        
        } 


    }

    public class CambiarDefaultPassword {
      
        Conexion con;
        public string email { get; set; }
        [Required]
        [DataType(DataType.Password)]
        public string defaultPass { get; set; }
        [Required]
        [StringLength(15, ErrorMessage = "La clave debe de estar en un rango  Min. 6 y Max. 15 caracteres.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        public string password { get; set; }
        [Required]
        [DataType(DataType.Password)]
        [System.Web.Mvc.Compare("password", ErrorMessage = "El password Introducido no coincide.")]
        public string repassword { get; set; }
        public CambiarDefaultPassword() { }
        public CambiarDefaultPassword(string depas, string pass, string emai) {
            this.defaultPass = depas;
            this.password = pass;
            this.email = emai;
        
        }

        public string ValidarUsuario(CambiarDefaultPassword log)
        {
            
            con = new Conexion();
            int result = con.DBCambiarDefaultPass(log);
            if (result == 7)
            {
                return "Registro Guardado Satisfactoriamente";
            }
            else
                if (result == -88)
                {

                    return "Verifique los datos ingresados..";
                }
                else

                    return "Se ha producido un Error.";


        }
    
    } 
}